package de.au.fi.calc.results;

import de.au.fi.calc.criteria.StandardCriteriaFactory;
import de.au.fi.calc.criteria.complex.CriteriaAnalysten;
import de.au.fi.calc.criteria.complex.CriteriaDreiMonatsReversal;
import de.au.fi.calc.criteria.complex.CriteriaGewinnwachstum;
import de.au.fi.calc.criteria.complex.CriteriaKgv1J;
import de.au.fi.calc.criteria.complex.CriteriaKgv5J;
import de.au.fi.calc.criteria.complex.CriteriaKurs;
import de.au.fi.calc.criteria.complex.CriteriaKursMomentum;
import de.au.fi.domain.Stock;

public class LevermannLargeCapResult extends Result{

	public LevermannLargeCapResult(Stock stock) 
	{
		fillCriterias(stock);
	}

	@Override
	protected void fillCriterias(Stock stock) {
		this.criterias.add(StandardCriteriaFactory.getRoeCriteria(stock.getRoeLj()));
		if(stock.getEbitdaLj()!=null && stock.getEbitLj() == null)
			this.criterias.add(StandardCriteriaFactory.getEbitdaMargeCriteria(stock.getEbitdaLj()));
		else
			this.criterias.add(StandardCriteriaFactory.getEbitMargeCriteria(stock.getEbitLj()));
		this.criterias.add(StandardCriteriaFactory.getEigKapQuLargeCapCriteria(stock.getEigKapQuLj()));
		this.criterias.add(new CriteriaKgv1J(stock.getKgvAj()));
		this.criterias.add(new CriteriaKgv5J(
				stock.getKgvAj(), stock.getKgv1j(), stock.getKgv2j(), stock.getKgv3j(), stock.getKgv4j()));
		this.criterias.add(new CriteriaAnalysten(stock.getAnalystenMeinung()));
		this.criterias.add(StandardCriteriaFactory.getReaktionQzCriteria(stock.getReaktionQz()));
		this.criterias.add(StandardCriteriaFactory.getGewinnRevCriteria(stock.getGewinnRev()));
		CriteriaKurs kurs6m = new CriteriaKurs("kurs vs 6m", stock.getKursNow(), stock.getKurs6monate());
		this.criterias.add(kurs6m);
		CriteriaKurs kurs1j = new CriteriaKurs("kurs vs 1j", stock.getKursNow(), stock.getKurs1jahr());
		this.criterias.add(kurs1j);
		this.criterias.add(new CriteriaKursMomentum(kurs6m.calculate(), kurs1j.calculate()));
		this.criterias.add(new CriteriaDreiMonatsReversal(stock.getDreimonatsReversal()));
		this.criterias.add(new CriteriaGewinnwachstum(stock.getEpsAj(), stock.getEpsNj()));
		this.criterias.add(StandardCriteriaFactory.getPiotroskiCriteria(stock.getPiotroskiScore()));
		this.criterias.add(StandardCriteriaFactory.getAltmannZScoreCriteria(stock.getAltMannZScore()));
	}

	
}
